package Tipos;

import java.io.Serializable;

/**
 * Corresponde a la ubicacion de la panaderia en la red.
 */
public class UbicacionPanaderia implements Serializable{
    private int id;
    private String ip;
    private int puerto;
    private String nombre;

    public UbicacionPanaderia() {
        this.id = 0;
        this.ip = null;
        this.puerto = 0;
        this.nombre = null;
    }

    public UbicacionPanaderia(int id) {
        this.id = id;
        this.ip = null;
        this.puerto = 0;
        this.nombre = null;
    }
    
    public UbicacionPanaderia(String ip, int puerto, String nombre, int id) {
        this.id = id;
        this.ip = ip;
        this.puerto = puerto;
        this.nombre = nombre;
    }
    
    public UbicacionPanaderia(String ubicacionCompleta) {
        //obteniendo ip
        int igual = ubicacionCompleta.indexOf('=') + 2; // para eliminar el espacio despues del igual
        int finValor = ubicacionCompleta.indexOf(' ', igual);
        String subMensaje = ubicacionCompleta.substring(igual, finValor);   
        if(subMensaje.equalsIgnoreCase("null")){
            this.ip = null;
        }else{
            this.ip = subMensaje;
        }
        //System.out.println(subMensaje);
        
        //obteniendo puerto
        igual = ubicacionCompleta.indexOf('=', finValor) + 2; // para eliminar el espacio despues del igual
        finValor = ubicacionCompleta.indexOf(' ', igual);
        subMensaje = ubicacionCompleta.substring(igual, finValor);
        Integer aux = new Integer(subMensaje);
        this.puerto = aux.intValue();
        //System.out.println(subMensaje);
        
        //obteniendo id
        igual = ubicacionCompleta.indexOf('=', finValor) + 2; // para eliminar el espacio despues del igual
        finValor = ubicacionCompleta.indexOf(' ', igual);
        subMensaje = ubicacionCompleta.substring(igual, finValor);
        aux = new Integer(subMensaje);
        this.id = aux.intValue();
        //System.out.println(subMensaje);
        
        //obteniendo nombre
        igual = ubicacionCompleta.indexOf('=', finValor) + 2; // para eliminar el espacio despues del igual
        finValor = ubicacionCompleta.indexOf('}', igual);
        subMensaje = ubicacionCompleta.substring(igual, finValor -1);
        if(subMensaje.equalsIgnoreCase("null")){
            this.nombre = null;
        }else{
            this.nombre = subMensaje;
        }
        //System.out.println(subMensaje);
    }

    @Override
    public boolean equals(Object obj){
        if(obj != null && obj instanceof UbicacionPanaderia){
            UbicacionPanaderia otraubicacion = (UbicacionPanaderia) obj;
            if(this.id == otraubicacion.getId())
                return true;
            else
                return false;
        }else
            return false;
        
    }

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public int getPuerto() {
        return puerto;
    }

    public void setPuerto(int puerto) {
        this.puerto = puerto;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "UbicacionPanaderia { ip = " + ip + " , puerto = " + puerto + " id = " + id + " nombre = " + nombre + " }";
    }
    
}
